package com.hspedu.hspliving.commodity.entity;

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;

import java.io.Serializable;
import java.util.Date;

import com.hspedu.common.valid.EnumValidate;
import com.hspedu.common.valid.SaveGroup;
import com.hspedu.common.valid.UpdateGroup;
import lombok.Data;
import org.hibernate.validator.constraints.URL;

import javax.validation.constraints.*;

/**
 * 家居品牌
 *
 * @author bing
 * @email bing@gmail.com
 * @date 2024-05-29 20:37:15
 */
@Data
@TableName("commodity_brand")
public class BrandEntity implements Serializable {
	private static final long serialVersionUID = 1L;

	/**
	 * id
	 * 老韩解读
	 * 1. @NotNull(groups = {UpdateGroup.class}, message = "修改要求指定id")
	 * 2. 表示在某个Controller 的JavaBean参数需要校验，并指定了UpdateGroup.class
	 时, @NotNull 校验注解生效
	 * 3. 这个UpdateGroup.class 会在某个Controller 的JavaBean 前指定(!!!)
	 * 4. 一句话: 这个@NotNull 是否生效由两个条件决定， (1)一个是Controller 的
	 JavaBean 指定(2)由@NotNull 的groups 指定
	 */
	@TableId
	@NotNull(message = "修改时id不能为空",groups = {UpdateGroup.class})
	@Null(message = "添加时不能指定id",groups = {SaveGroup.class})
	private Long id;
	/**
	 * 品牌名
	 * 在两个校验组都生效
	 */
	@NotBlank(message = "品牌名不能为空",groups = {SaveGroup.class, UpdateGroup.class})
	private String name;
	/**
	 * logo-图片oss地址
	 */
	@NotBlank(message = "logo不能为空",groups = {SaveGroup.class})
	@URL(message = "logo不是合法的url",groups = {SaveGroup.class, UpdateGroup.class})
	private String logo;
	/**
	 * 说明
	 */
	private String description;

	/**
	 * 显示
	 * 老韩解读
	 * 1.这里使用了@NotNull 注解，该注解可以接受任意类型
	 * 2.如果使用@NotBlank 注解，会报错，因为@NotBlank 不支持校验Integer
	 * 3.同学们在开发时，要注解注解可以接受哪些类型，直接看注解源码即可
	 * 4.如果是数字类型,不支持@Pattern, 后面再想办法
	 */
	@NotNull(message = "显示状态不能为空",groups = {/*SaveGroup.class,*/ UpdateGroup.class})
	@EnumValidate(values = {0,1},message = "显示状态值只能是0或1",groups = {/*SaveGroup.class,*/ UpdateGroup.class})
	//@EnumValidate(regexp = "^[0-1]$",message = "显示状态值只能是0或1",groups = {SaveGroup.class, UpdateGroup.class})
	private Integer isshow;
	/**
	 * 检索首字母-正则表达式校验
	 */
	@NotBlank(message = "检索首字母不能为空",groups = {SaveGroup.class})
	@Pattern(regexp="^[a-zA-Z]$",message = "检索字母必须是一个字母",groups = {SaveGroup.class, UpdateGroup.class})
	private String firstLetter;
	/**
	 * 排序
	 */
	@NotNull(message = "排序值不能为空",groups = {SaveGroup.class})
	@Min(value = 0,message = "排序值要求大于等于0",groups = {SaveGroup.class, UpdateGroup.class})
	private Integer sort;

}
